package com.lili.collection.core.support;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 配置属性定义
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface ConfigFieldDef {

    enum Type {
        STRING,
        INTEGER,
        LONG,
        DOUBLE,
        DECIMAL,
        BOOLEAN,
        ENUM,
        LIST,
        MAP,
        OBJECT,
        ;
    }

    /**
     * 分组
     */
    String group() default "";

    /**
     * 标签
     */
    String label() default "";

    /**
     * 描述
     */
    String description() default "";

    /**
     * 类型
     */
    Type type() default Type.STRING;

    /**
     * 显示顺序
     */
    int displayOrder() default 0;

    /**
     * 必要
     */
    boolean required() default false;

    /**
     * 只读
     */
    boolean readonly() default false;

    /**
     * 废弃
     */
    boolean deprecated() default false;
}
